On rotating media, such as hard disks, seek time can be significant. With input/output (IO) schedulers who maintain a queue per task and then try to allocate a fair share to different queues in terms of disk time used, seek time accounting to a queue becomes an issue because during queue switches, it is not clear who should be charged for seek time. A new queue may start dispatching at a distant location of a disk as compared to current disk head position, causing a significant amount of seek time but it is not fair to attribute this seek time to the new queue, as this seek time depends on where previous IO queue was doing IO. To solve this problem, IO schedulers often do not attribute the seek time to the new queue until at least a first request from the queue has finished and this seek time (e.g., seek time incurred in completing the first request from the queue) is not accounted to any of the queues.
Discarding seek time incurred during IO queue switches always, is not the best method in a hierarchical IO scheduling setup, where within a group, a user can launch multiple threads and seek time between IO queues of same group is lost. A better method is that this seek time is charged to the group to which these IO queues belong to. In extreme cases it might happen that a user with-in a group launches multiple threads and issues a bunch of sequential IO request from each thread. Each thread IO queue, may use only a part of its allocated time slice and the IO scheduler may schedule in another IO queue from same group. This IO queue switch might incur a significant amount of seek time and if such seek time is not accounted to appropriate groups, it can lead to inaccuracy in disk access time accounting, which is the parameter on which fairness and in turn quality of service (QoS) is based upon.